﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace webnew.BLL
{
    public  class Sys_Title
    {
        private readonly webnew.DAL.Sys_TitleHelper dal = new webnew.DAL.Sys_TitleHelper();
        public Sys_Title()
		{ }

        /// <summary>
		/// 增加一条数据
		/// </summary>
        public int Add(webnew.Model.Sys_TitleInfo model)
        {
            CheckModel(model);
           return dal.Add(model);
        }

        /// <summary>
		/// 更新一条数据
		/// </summary>
        public int Update(webnew.Model.Sys_TitleInfo model)
        {
            CheckModel(model);
            return dal.Modify(model);
        }

        /// <summary>
        /// 根据ID删除一条数据
        /// </summary>
        public int del(string id)
        {          
            return dal.Del(id);
        } 

        /// <summary>
		/// 获得泛型数据列表（存在的所有数据）
		/// </summary>
        public List<webnew.Model.Sys_TitleInfo> GetList()
        {
            return dal.GetList();
        }

        /// <summary>
        /// 根据条件获得泛型数据列表
        /// </summary>
        public List<webnew.Model.Sys_TitleInfo> GetconList(string condition)
        {
            return dal.GetconList(condition);
        }

       /// <summary>
       /// 根据用户ID返回一个实体
       /// </summary>
        public webnew.Model.Sys_TitleInfo GetList(string id)
        {
            return dal.GetModel(id);
        }

        /// <summary>
        /// 取得数据行数,不建议直接使用此方法,请根据业务逻辑重写
        /// </summary>
        public int GetCount(string condition)
        {
            return dal.GetCount(condition);
        }

        /// <summary>
		/// 分页获取泛型数据列表,不建议直接使用此方法,请根据业务逻辑重写
		/// </summary>
        public List<webnew.Model.Sys_TitleInfo> GetPageList(string field,string condition, int pageSize, int pageIndex, string tbNames, string sortNames, bool sortType)
        {
            if (pageSize <= 0)
                throw new Exception("每页数据条数必须大于0。");

            if (pageIndex <= 0)
                throw new Exception("页索引必须大于0。");

            if (string.IsNullOrEmpty(sortNames))
                throw new Exception("排序字段不能为空。如果是默认排序，可以填写主键字段。");
            return dal.GetPageList( field,condition, pageSize, pageIndex, tbNames, sortNames, sortType);
        }

		#region 验证参数的有效性，请在此加入更多业务逻辑的验证

		/// <summary>
		/// 验证实体的有效性
		/// </summary>
		private void CheckModel(webnew.Model.Sys_TitleInfo model)
		{
			if (model == null)
				throw new ArgumentNullException("参数不能为空。");

			if (!Regex.IsMatch(model.titlename, @"^[\s\w\u4e00-\u9fa5]{1,50}$"))
				throw new ArgumentException("Name格式不正确。");
		}

        private void CheckConditionArgument(int ID)
        {
        }
        #endregion
        /////////////////////////////////////////////////////
        /// <summary>
        /// 根据职称名 查找数据库是否存在该职称名
        /// </summary>
        /// <param name="CompName">输入的职称名</param>
        /// <returns>返回string "1"代表存在,"0"代表不存在</returns>
        public string ExistTitleName(string TitleName)
        {
            return dal.ExistTitleName(TitleName);

        }

        /// <summary>
        /// 根据选中的职称ID,判断是否能删除
        /// </summary>
        /// <param name="CompIds">选中的职称ID</param>
        /// <returns>返回false 表示不能删除;返回true 表示可以删除</returns>
        public bool isCanDel(string RoleIds)
        {
            return dal.isCanDel(RoleIds);
        }

        /// <summary>
        /// 导出Excel获取列表数据(带条件的)
        /// </summary>
        public System.Data.DataTable GetExcelList()
        {
            return dal.GetExcelList(" *", "Sys_Title", "isdel=0");
            //return GetList(dr);
        }
    }
}
